﻿using System;
using System.Web.UI.WebControls;
using Enums;
using Resources;
using Vallejos.Entidades.ModeloDeDatos;
using Vallejos.Excepciones;
using Vallejos.Negocio;

public partial class Concesionarias_ModificacionConcesionarias : System.Web.UI.Page
{
    private const string PaginaDeBusqueda = "BusquedaConcesionarias.aspx";
    #region "Eventos De Pagina"
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            var negocio = (NegocioFacade)Session[VariablesDeSesion.NegocioFacade.ToString()];

            var concesionaria = negocio.RecuperarEntidadEnEdicion<Concesionaria>();
            if (concesionaria != null)
                CargarConcesionaria(concesionaria);
        }
    }

    protected void btnGuardar_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
            GuardarCargarConcesionaria();
    }

    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect(PaginaDeBusqueda);
    }
    #endregion

    #region Metodos
    private void CargarConcesionaria(Concesionaria concesionaria)
    {
        txtRazonSocial.Text = concesionaria.RazonSocialNombre;
        txtCuit.Text = concesionaria.CUITNombre;

        ctlInfoDomiciliaria.SetearDatos(concesionaria.DatosDeEmpresa.DatosDomiciliarios);
    }

    private void GuardarCargarConcesionaria()
    {
        var negocio = (NegocioFacade)Session[VariablesDeSesion.NegocioFacade.ToString()];

        var concesionaria = negocio.RecuperarEntidadEnEdicion<Concesionaria>() ?? new Concesionaria();

        concesionaria.DatosDeEmpresa = concesionaria.DatosDeEmpresa ?? new InformacionDeEmpresa();

        concesionaria.DatosDeEmpresa.CUIT = txtCuit.Text;
        concesionaria.DatosDeEmpresa.RazonSocial = txtRazonSocial.Text;
        concesionaria.DatosDeEmpresa.DatosDomiciliarios = concesionaria.DatosDeEmpresa.DatosDomiciliarios ??
                                                          new InformacionDomiciliaria();
        concesionaria.DatosDeEmpresa.DatosDomiciliarios =
            ctlInfoDomiciliaria.ObtenerDatos(concesionaria.DatosDeEmpresa.DatosDomiciliarios.Id);

        

        try
        {
            negocio.GuardarConcesionaria(concesionaria);
            negocio.AlmacenarEntidadEnEdicion<Concesionaria>(null);
            Response.Redirect(PaginaDeBusqueda);
        }
        catch (ExcepcionNegocio ex)
        {
            var validator = new CustomValidator { IsValid = false, ErrorMessage = ex.Message };
            Page.Validators.Add(validator);
        }
        catch (Exception)
        {
            var validator = new CustomValidator { IsValid = false, ErrorMessage = Resource.ErrorDesconocido };
            Page.Validators.Add(validator);
        }


    }
    #endregion
}